Software applications, such as virtual machines (VMs), may be executed by a group, or “cluster,” of host computing devices. Each VM creates an abstraction of physical computing resources, such as a processor and memory, of the host executing the VM and executes a “guest” operating system, which, in turn, executes one or more software applications. The abstracted resources may be functionally indistinguishable from the underlying physical resources to the guest operating system and software applications.
VMs or other devices may be connected together in one or more networks. A network address translation (NAT) device may be used with the VMs and the devices to hide each device's network address from being disclosed to external, or public, networks. Applications executing on the VMs may establish network connections to one or more remote devices within one or more public networks, such as the Internet. If a VM transmits a data packet to the remote device, the NAT device translates a private network address of the VM into a public network address. The public network address is used to connect to the remote device and to route data packets from the remote device back to the NAT device. When the NAT device receives the data packets from the remote device, the NAT device translates the public network address of the destination VM to the VM's private network address. The NAT device transmits the data packets to the VM using the private network address.
The network connectivity of the remote device, and the networks or uplinks connected to the remote device, may be dynamic in nature. For example, the network connectivity of the remote device or uplink may be temporarily or permanently interrupted. The network interruptions can cause some remote devices and/or uplinks to be unreachable by applications executing on devices or VMs within the private network. However, information regarding the network interruptions is not available to the applications and/or VMs within the private network, and the applications and/or VMs may continue to attempt to reach the currently unreachable parts or devices of the external network. This behavior can cause significant downtime for these applications and/or VMs and may degrade a user's experience. Often, the inaccessible remote device can be reached through another uplink or network connected to the NAT service, or another equivalent host or device on another reachable external network can provide the service or data the application on the private network requires. However, to receive the desired service or data from the other host or device, the application on the private network must sever its connection to the currently inaccessible remote device and initiate a new connection to the other host or device. Further, the network properties of various uplinks or networks (such as proxy settings) connected to the NAT service might be different from each other. A VM within the private network may have queried and cached the network settings of the default uplink (and thereby the default public network). If the default uplink (and thereby the default public network) for the NAT service changes, this information must be updated or the applications on the private network may no longer be able to reach the external network.